100 REM SAVE"0:B128 IRQ RATE",8: REM ELIZABETH DEAL MALVERN PA (V2) 101 ; 102 V1 WENT TO THE TRANSACTOR. V3 (THIS) BETTER TIMER-B CODE, AND 110 ; IRQ MASK IS BETTER 120 INTERRUPTS ON THE B-MACHINES ARE HANDLED BY THE TRI-PORT CHIP AT 130 $DE00. IT APPEARS THAT ANY VALID CIA2 SOURCE, IN ADDITION TO THE 140 TOD-ALARM, CAN BE USED TO INTERRUPT. 150 ; 160 NORMALLY IRQS OCCUR AT THE POWER LINE FREQUENCY (BIT 0 AT $DE02). THEY 170 CAN BE TURNED OFF AND REPLACED BY ANOTHER SOURCE, FOR INSTANCE, TIMER-A 180 FALLING THROUGH ZERO, AS ON THE C64. IT'S A PEST, BUT CAN BE DONE. 230 ; 250 YOU CAN TYPE THE BYTES UNDER THE ******** (null) THE MONITOR. 260 (null) 15:SYS 7*256 GETS IT (null)ING. THE LITTLE RESET BUTTON KILLS THE PROJECT. 262 : 264 ONE USE MIGHT BE U.K. SOFTWARE WHICH RELIES ON THE 50/SEC IRQS. YOU MAY 265 TRY IT WITH SUPERSCRIPT, START THE CODE (null) THE SYS CALL ABOVE (NOT 267 MONITOR!), THEN LOAD AND RUN SUPERSCRIPT AS YOU NORMALLY DO. MY (null)BOARD 268 DOES NOT BOUNCE THE (null)S ANYMORE AND ALWAYS TYPES CORRECT CHARACTERS. 269 : 270 ; ******** 800 F0700 78 SEI 801 F0701 AD 07 DE LDA $DE07 ;CLEAR LATCH & AIR 802 F0704 8D 07 DE STA $DE07 803 F0707 A9 40 LDA #$40 ;SET TIMER A FOR 50HZ ($9C40) 804 F0709 8D 04 DC STA $DC04 ;(60HZ=$8235) 805 F070C A9 9C LDA #$9C 806 F070E 8D 05 DC STA $DC05 807 F0711 A9 81 LDA #$81 ;ICR-ENABLE TA IRQS ONLY 808 F0713 8D 0D DC STA $DC0D 809 F0716 AD 0E DC LDA $DC0E ;CRA-LEAVE 50/60HZ FLAG ALONE FOR TOD 810 F0719 29 80 AND #$80 ;START TA IN CONTINUOUS MODE 811 F071B 09 01 ORA #$01 812 F071D 8D 0E DC STA $DC0E 813 F0720 AD 05 DE LDA $DE05 ;TRI-PORT IRQ MASK ... 814 F0723 29 FE AND #$FE ; IGNORE POWER LINE FLIPS 815 F0725 09 04 ORA #$04 ; ENABLE CIA2 IRQS INSTEAD 816 F0727 8D 05 DE STA $DE05 817 F072A A9 36 LDA #$36 ;SWITCH IRQ ROUTINE TO (*) 818 F072C 8D 00 03 STA $0300 819 F072F A9 07 LDA #$07 820 F0731 8D 01 03 STA $0301 821 F0734 58 CLI 823 F0735 60 RTS 824 F0736 A5 01 (*) LDA $01 ;IRQ PATCH 825 F0738 48 PHA 826 F0739 AE 07 DE LDX $DE07 ;LOOK AT IRQ FLAG 827 F073C 8A TXA 828 F073D 29 04 AND #$04 ;WAS IT CIA2"? 829 F073F D0 04 BNE $0745 ;YES, [203] AROUND 830 F0741 8A TXA ; NO... 831 F0742 4C F5 FB JMP $FBF5 ; ...DO USUAL STUFF 832 F0745 EA NOP ;YES [171] TRY 'INC $D043' HERE 833 F0746 EA NOP 834 F0747 EA NOP 835 F0748 AD 0D DC LDA $DC0D ;[161][173]CLEAR CIA2[171]IRQ FLAG 836 F074B 29 02 [175] #$02 ;IS IEEE[171]TIMEOUT BIT SET"? 837 F074D F0 10 BEQ $075F ; NOPE, (null) AROUND 838 F074F A9 00 LDA #$00 ; YUP, FORCE IT ON 839 F0751 8D 06 DC STA $DC06 ; SO THAT DISK ROUTINES CAN SEE 840 F0754 8D 07 DC STA $DC07 ; THIS BIT. 841 F0457 AD 0F DC LDA $DC0F ; SET TIMER-B FOR ONE SHOT MODE 842 F045A 09 18 ORA #$18 ; SO IT WON'T TIME OUT ALL THE TIME 843 F045C 8D 0F DC STA $DC0F ; BUT DISK WILL STILL SEE IT ONCE 844 F045F 4C 81 FC JMP $FC81 ;DO (null)BOARD SCAN, ETC... RTI 845 ; 900 SOME ADDITIONS TO THE TRANSACTOR V4#5 ISSUE 901 FOR PROTECTO/CBM B-128 VERSION 905 ; 910 $DE02: IRQ LATCH. POKE ZERO TO CLEAR 1 BIT, READ $DE07 TO CLR ALL 920 ; 7 6 8 4 3 2 1 0 930 ; NOT NOT IRQ ACIA CIA1 CIA2 IEEE 60HZ 940 ; USED USED PEND IP SRQ PWR 945 ; 946 $DE06: CB IS UNCONNECTED (BOTH BITS ARE HIGH) 947 ; 950 $DC0D: BIT 1, TIMER B (CONT.MODE) IS SET FOR IEEE 65MS 960 ; TIMEOUTS. BIT 1 IS TESTED ONLY, NO IRQS. 965 ; 970 $DC0E: CIA2 CRA. BIT 7 IS ZERO (1 IN U.K.) TOD WILL USE 60HZ. 980 ; BIT 3 IS SET AT IOINIT TIME - TA ONE SHOT AND NEVER USED.